const express = require('express')
// 导入学习数据模块
const practiceModel = require('../../model/practiceModel')
const router = express.Router()
const { v4: uuidv4 } = require('uuid')
// 引入jwt token工具
const JwtUtil = require('../../utils/jwt')
const getCreateTime = require('../../utils/getCreateTime')
// 学习
// 参数：token, practice_id, user_id, practice_create_time,practice_num
router.get('/add', async (req, res) => {
    let practice_id = uuidv4()
    let token = req.query.token
    // let user_id = req.query.user_id
    let practice_num = req.query.practice_num
    let practice_create_time = req.body.user_create_time || getCreateTime.now()//  学习的时间 （'2022-09-29 00:00:00'）
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data;
            // 调用学习方法
            await practiceModel.add(practice_id, user_id, practice_create_time, practice_num)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 参数：token
router.get('/list', async (req, res) => {
    let token = req.query.token 
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data
            // 调用学习方法
            await practiceModel.list(user_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 统计学习次数
// 参数：token
router.get('/total', async (req, res) => {
    let token = req.query.token 
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data
            // 调用学习方法
            await practiceModel.total(user_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 统计今天学习人数
router.get('/all', async (req, res) => {
    let token = req.query.token 
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            let user_id = result.data;
            // console.log('xx',user_id)
            await practiceModel.all(user_id)
            .then(
                data => {
                    res.send(data)
                }
            )
            .catch(
                err => {
                    res.send({ code: 500, msg: '服务器异常...2xx', err })
                }
            )
        }
    }
})
// 获取分页学习列表
router.get('/items', async (req, res) => {
    const page_num = req.query.page_num //当前的页码
    const page_size = req.query.page_size //当前页的数量
    // 调用获取分页内容列表
    await practiceModel.items(page_num, page_size)
        .then(
            data => {
                res.send(data)
            }
        )
        .catch(
            err => {
                res.send({ code: 500, msg: '服务器异常...', err })
            }
        )
})
// 删除学习
router.get('/remove', async (req, res) => {
    let token = req.query.token
    let practice_id = req.query.practice_id
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        // 用户是否在线
        if (result.data) {
            // 调用删除学习方法
            await practiceModel.remove(practice_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 路由挂在模块系统下
module.exports = router;
